package top.bulk.intemasking.masking;

import cn.hutool.core.util.StrUtil;

/**
 * 字段脱敏 处理接口
 *
 * @author 散装java
 * @date 2024-07-15
 */
public interface Masking {
    /**
     * 特定的脱敏规则定义
     *
     * @param value 要脱敏字段
     * @return 脱敏后的字符串
     */
    String hide(String value);

    /**
     * 脱敏
     *
     * @param value        需要脱敏的字符串
     * @param startInclude 开始位置（包含）
     * @param endExclude   结束位置（不包含）
     * @param replacedChar 替换的字符
     * @return 脱敏后的字符串
     */
    default String hide(String value, int startInclude, int endExclude, char replacedChar) {
        if (StrUtil.isBlank(value)) {
            return value;
        }
        // 没有制定开始和结束位置，采用默认规则
        if (startInclude == 0 && endExclude == 0) {
            return hide(value);
        }
        // 采用默认规则替换
        return StrUtil.replace(value, startInclude, endExclude, replacedChar);
    }


}
